/*
题目内容：
 有一个邮递员要在n个城市之间来回送信。但有的城市之间有大路相连而有的没有路。
现在要由一个城市到另一个城市送信，中途最少要经过多少个其它的城市呢？
输入描述
第一行是n,k(1<=n<=10000, 1<=k<=20000)，接下来就是k行。这k行每行有两个数a,b(1<=a,b<= n)，表示城市a和b之间有
大路k行以后就是两个数p和q。

输出描述
输出从城市p到城市q之间最少要经过的其它的城市的数目。如果p和q之间不连通则输出0

输入样例
6 6
1 4
1 2
2 3
3 4
5 4
5 6
1 6

输出样例
2
*/
#include<stdio.h>
#define N 10005
int book[N];
int road[N][N];
int start,end;
int ans=9e7;
int n;
void dfs(int start,int step)
{
	int next;
	if(start==end)
	{
		ans=ans<step?ans:step;
		return;
	}
	for(next=1;next<=n;next++)
	{
		if(road[start][next] && !book[next])
		{
			book[next]=1;
			dfs(next,step+1);
			book[next]=0;
		}
	}
	return;
}
int main()
{
	int i,j,k;
	int a,b;
	scanf("%d%d",&n,&k);getchar();
	while(k--)
	{
		scanf("%d%d",&a,&b);getchar();
		road[a][b]=road[b][a]=1;
	}
	scanf("%d%d",&start,&end);
	book[start]=1;
	dfs(start,0);
	if(ans==9e7)
		printf("0\n");
	else
		printf("%d\n",ans-1);
	return 0;
}
